package com.mfs.proxy.core.message.processor;

import java.io.IOException;
import java.nio.channels.SelectionKey;

/**
 * 消息接收处理器
 * 改处理器主要负责消息内容的解析、解析后根据消息类型不同进行处理，针对不同的消息会调用不同的消息处理器进行处理
 *
 * @author mfs
 * @date 2023/7/1 22:34
 **/
public interface MessageReceiveProcessor<T> {

    /**
     * 消息接收
     * 入参定义比较宽泛，方便不同的消息类型传入不同数量、不同类型的参数。再使用时需要强转，不太优雅
     *
     * @param selectionKey 接收消息的 selectionKey
     * @param messageContent 消息内容
     * */
    void receive(SelectionKey selectionKey, T messageContent) throws IOException;
}
